最近升級了 gorm 2.0,紀錄一下 on duplicate update 寫法
type TableItem struct {
ID int // PK
Amount int
}
func Create(ID int, amount int) error {
db := dbPool.Get() // 取得已經建立好的 connection
item := &TableItem{
ID: ID,
Amount: amount,
}
err := db.Clauses(clause.OnConflict{
DoUpdates: clause.Assignments(map[string]interface{}{"amount": item.Amount}),
}).Create(item).Error
if err != nil {
return err
}
return nil
}